if (window.PrimeFaces) {
  /** French */
  PrimeFaces.locales["fr"] = {
    startsWith: "Commence par",
    contains: "Contient",
    notContains: "Ne contient pas",
    endsWith: "Se termine par",
    equals: "Égal à",
    notEquals: "Différent de",
    noFilter: "Aucun filtre",
    filter: "Filtre",
    lt: "Inférieur à",
    lte: "Inférieur ou égal à",
    gt: "Supérieur à",
    gte: "Supérieur ou égal à",
    dateIs: "La date est",
    dateIsNot: "La date n'est pas",
    dateBefore: "Avant le",
    dateAfter: "Après le",
    custom: "Personnalisé",
    clear: "Effacer",
    apply: "Appliquer",
    matchAll: "Correspond à tous",
    matchAny: "Au moins un Correspond",
    addRule: "Ajouter une règle",
    removeRule: "Retirer une règle",
    accept: "Oui",
    reject: "Non",
    choose: "Choisir",
    upload: "Envoyer",
    cancel: "Annuler",
    completed: "Terminé",
    pending: "En attente",
    dayNames: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"],
    dayNamesShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"],
    dayNamesMin: ["Di", "Lu", "Mar", "Mer", "Je", "Ve", "Sa"],
    monthNames: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"],
    monthNamesShort: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Août", "Sept", "Oct", "Nov", "Dec"],
    chooseYear: "Choisir une année",
    chooseMonth: "Choisir un mois",
    chooseDate: "Choisir une date",
    prevDecade: "Décennie précédente",
    nextDecade: "Décennie suivante",
    prevYear: "Année précédente",
    nextYear: "Année suivante",
    prevMonth: "Mois précédent",
    nextMonth: "Mois suivant",
    prevHour: "Heure précédente",
    nextHour: "Heure suivante",
    prevMinute: "Minute précédente",
    nextMinute: "Minute suivante",
    prevSecond: "Seconde précédente",
    nextSecond: "Seconde suivante",
    am: "am",
    pm: "pm",
    today: "Aujourd'hui",
    now: "Maintenant",
    weekHeader: "Sem",
    firstDayOfWeek: 1,
    showMonthAfterYear: false,
    dateFormat: "dd/mm/yy",
    weak: "Faible",
    medium: "Moyen",
    strong: "Fort",
    passwordPrompt: "Saisissez un mot de passe",
    emptyFilterMessage: "Aucun résultat trouvé",
    searchMessage: "{0} résultats disponibles",
    selectionMessage: "{0} éléments sélectionnés",
    emptySelectionMessage: "Aucun élément sélectionné",
    emptySearchMessage: "Aucun résultat trouvé",
    emptyMessage: "Aucune option disponible",
    aria: {
      trueLabel: "Vrai",
      falseLabel: "Faux",
      nullLabel: "Aucune sélection",
      star: "1 étoile",
      stars: "{star} étoiles",
      selectAll: "Tous éléments sélectionnés",
      unselectAll: "Tous éléments désélectionnés",
      close: "Fermer",
      previous: "Précédent",
      next: "Suivant",
      navigation: "Navigation",
      scrollTop: "Défiler tout en haut",
      moveTop: "Déplacer tout en haut",
      moveUp: "Déplacer vers le haut",
      moveDown: "Déplacer vers le bas",
      moveBottom: "Déplacer tout en bas",
      moveToTarget: "Déplacer vers la cible",
      moveToSource: "Déplacer vers la source",
      moveAllToTarget: "Tout déplacer vers la cible",
      moveAllToSource: "Tout déplacer vers la source",
      pageLabel: "Page {page}",
      firstPageLabel: "Première Page",
      lastPageLabel: "Dernière Page",
      nextPageLabel: "Page Suivante",
      rowsPerPageLabel: "Lignes par page",
      previousPageLabel: "Page précédente",
      jumpToPageDropdownLabel: "Aller à la page",
      jumpToPageInputLabel: "Aller à la page",
      selectRow: "Ligne sélectionnée",
      unselectRow: "Ligne désélectionnée",
      expandRow: "Ligne dépliée",
      collapseRow: "Ligne repliée",
      showFilterMenu: "Montre le menu des filtres",
      hideFilterMenu: "Masque le menu des filtres",
      filterOperator: "Opérateur de filtrage",
      filterConstraint: "Contrainte de filtrage",
      editRow: "Édite une ligne",
      saveEdit: "Sauvegarde l'édition",
      cancelEdit: "Annule l'édition",
      listView: "Vue en liste",
      gridView: "Vue en grille",
      slide: "Diapositive",
      slideNumber: "{slideNumber}",
      zoomImage: "Zoomer l'image",
      zoomIn: "Zoomer",
      zoomOut: "Dézoomer",
      rotateRight: "Tourner vers la droite",
      rotateLeft: "Tourner vers la gauche",
    },
  };

// custom PF labels
  PrimeFaces.locales["fr"] = $.extend(true, {}, PrimeFaces.locales["fr"], {
    weekNumberTitle: "S",
    isRTL: false,
    yearSuffix: "",
    timeOnlyTitle: "Choisir l'heure",
    timeText: "Heure",
    hourText: "Heures",
    minuteText: "Minutes",
    secondText: "Secondes",
    millisecondText: "Millisecondes",
    year: "Année",
    month: "Mois",
    week: "Semaine",
    day: "Jour",
    list: "Agenda",
    allDayText: "Toute la journée",
    moreLinkText: "Plus...",
    noEventsText: "Pas d'événements",
    aria: {
      "datatable.sort.ASC": "activer pour trier la colonne dans l'ordre croissant",
      "datatable.sort.DESC": "activer pour trier la colonne dans l'ordre décroissant",
      "datatable.sort.NONE": "activer pour retirer le tri sur la colonne",
      "colorpicker.OPEN": "Ouvrir le sélecteur de couleur",
      "colorpicker.CLOSE": "Fermer le sélecteur de couleur",
      "colorpicker.CLEAR": "Effacer la couleur sélectionnée",
      "colorpicker.MARKER": "Saturation: {s}. Luminosité: {v}.",
      "colorpicker.HUESLIDER": "Curseur de teinte",
      "colorpicker.ALPHASLIDER": "Curseur d'opacité",
      "colorpicker.INPUT": "Valeur du champ couleur",
      "colorpicker.FORMAT": "Format de couleur",
      "colorpicker.SWATCH": "Nauncier",
      "colorpicker.INSTRUCTION": "Sélecteur de saturation et de luminosité. Utilisez les touches fléchées haut, bas, gauche et droite pour sélectionner.",
      "spinner.INCREASE": "Augmenter la valeur",
      "spinner.DECREASE": "Diminuer la valeur",
      "switch.ON": "Sur",
      "switch.OFF": "Arrêt",
      "messages.ERROR": "Erreur",
      "messages.FATAL": "Fatal",
      "messages.INFO": "Information",
      "messages.WARN": "Avertissement",
    },
    messages: {
      // components
      "javax.faces.component.UIInput.CONVERSION": "{0} : une erreur de conversion s'est produite.",
      "javax.faces.component.UIInput.REQUIRED": "{0} : Erreur de validation : la valeur est requise.",
      "javax.faces.component.UIInput.UPDATE": "{0} : Une erreur s'est produite lors du traitement des informations que vous avez saisies.",
      "javax.faces.component.UISelectOne.INVALID": "{0} : Erreur de validation : la valeur n'est pas valide.",
      "javax.faces.component.UISelectMany.INVALID": "{0} : Erreur de validation : la valeur n'est pas valide.",
      "javax.faces.converter.BigDecimalConverter.DECIMAL": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal sign\u00e9.",
      "javax.faces.converter.BigDecimalConverter.DECIMAL_detail": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal sign\u00e9 compos\u00e9 de z\u00e9ro ou plusieurs chiffres, lesquels peuvent \u00eatre suivis d'une d\u00e9cimale et d'une fraction.  Exemple : {1}",
      "javax.faces.converter.BigIntegerConverter.BIGINTEGER": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres. Exemple : {1}",
      "javax.faces.converter.BooleanConverter.BOOLEAN": "{1} : '{0}' doit \u00eatre 'true' ou 'false'.",
      "javax.faces.converter.BooleanConverter.BOOLEAN_detail": "{1} : '{0}' doit \u00eatre 'true' ou 'false'.  Toute valeur autre que 'true' sera \u00e9valu\u00e9e comme 'false'.",
      "javax.faces.converter.ByteConverter.BYTE": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compris entre 0 et 255.",
      "javax.faces.converter.ByteConverter.BYTE_detail": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compris entre 0 et 255.  Exemple : {1}",
      "javax.faces.converter.CharacterConverter.CHARACTER": "{1} : '{0}' doit \u00eatre un caract\u00e8re valide.",
      "javax.faces.converter.CharacterConverter.CHARACTER_detail": "{1} : '{0}' doit \u00eatre un caract\u00e8re ASCII valide.",
      "javax.faces.converter.DateTimeConverter.DATE": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une date.",
      "javax.faces.converter.DateTimeConverter.DATE_detail": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une date. Exemple : {1}",
      "javax.faces.converter.DateTimeConverter.TIME": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une heure.",
      "javax.faces.converter.DateTimeConverter.TIME_detail": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une heure. Exemple : {1}",
      "javax.faces.converter.DateTimeConverter.DATETIME": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une date et une heure.",
      "javax.faces.converter.DateTimeConverter.DATETIME_detail": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une date et une heure. Exemple : {1}",
      "javax.faces.converter.DateTimeConverter.PATTERN_TYPE": "{1} : Un attribut 'pattern' ou 'type' doit \u00eatre sp\u00e9cifi\u00e9 pour la conversion de la valeur '{0}'.",
      "javax.faces.converter.DoubleConverter.DOUBLE": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.DoubleConverter.DOUBLE_detail": "{2} : '{0}' doit \u00eatre un nombre compris entre 4,9E-324 et 1,7976931348623157E308. Exemple : {1}",
      "javax.faces.converter.EnumConverter.ENUM": "{2} : '{0}' doit \u00eatre convertible en \u00e9num\u00e9ration.",
      "javax.faces.converter.EnumConverter.ENUM_detail": "{2} : '{0}' doit \u00eatre convertible en \u00e9num\u00e9ration \u00e0 partir de l'\u00e9num\u00e9ration qui contient la constante '{1}'.",
      "javax.faces.converter.EnumConverter.ENUM_NO_CLASS": "{1} : '{0}' doit \u00eatre convertible en \u00e9num\u00e9ration \u00e0 partir de l'\u00e9num\u00e9ration, mais aucune classe d'\u00e9num\u00e9ration n'a \u00e9t\u00e9 fournie.",
      "javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail": "{1} : '{0}' doit \u00eatre convertible en \u00e9num\u00e9ration \u00e0 partir de l'\u00e9num\u00e9ration, mais aucune classe d'\u00e9num\u00e9ration n'a \u00e9t\u00e9 fournie.",
      "javax.faces.converter.FloatConverter.FLOAT": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.FloatConverter.FLOAT_detail": "{2} : '{0}' doit \u00eatre un nombre compris entre 1,4E-45 et 3,4028235E38. Exemple : {1}",
      "javax.faces.converter.IntegerConverter.INTEGER": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.IntegerConverter.INTEGER_detail": "{2} : '{0}' doit \u00eatre un nombre compris entre -2147483648 et 2147483647. Exemple : {1}",
      "javax.faces.converter.LongConverter.LONG": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.LongConverter.LONG_detail": "{2} : '{0}' doit \u00eatre un nombre compris entre -9223372036854775808 et 9223372036854775807. Exemple : {1}",
      "javax.faces.converter.NumberConverter.CURRENCY": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une devise.",
      "javax.faces.converter.NumberConverter.CURRENCY_detail": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme une devise. Exemple : {1}",
      "javax.faces.converter.NumberConverter.PERCENT": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme un pourcentage.",
      "javax.faces.converter.NumberConverter.PERCENT_detail": "{2} : '{0}' n'a pu \u00eatre interpr\u00e9t\u00e9 comme un pourcentage. Exemple : {1}",
      "javax.faces.converter.NumberConverter.NUMBER": "{2}: '{0}' n'est pas un nombre.",
      "javax.faces.converter.NumberConverter.NUMBER_detail": "{2}: '{0}' n'est pas un nombre. Exemple : {1}",
      "javax.faces.converter.NumberConverter.PATTERN": "{2}: '{0}' n'est pas un mod\u00e8le de nombre.",
      "javax.faces.converter.NumberConverter.PATTERN_detail": "{2}: '{0}' n'est pas un mod\u00e8le de nombre. Exemple : {1}",
      "javax.faces.converter.ShortConverter.SHORT": "{2} : '{0}' doit \u00eatre un nombre d\u00e9cimal compos\u00e9 d'un ou plusieurs chiffres.",
      "javax.faces.converter.ShortConverter.SHORT_detail": "{2} : '{0}' doit \u00eatre un nombre compris entre -32768 et 32767. Exemple : {1}",
      "javax.faces.converter.STRING": "{1} : Impossible de convertir '{0}' en cha\u00eene.",
      "javax.faces.validator.NOT_IN_RANGE": "Erreur de validation : l'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues de {0} et de {1}.",
      "javax.faces.validator.DoubleRangeValidator.MAXIMUM": "{1} : Erreur de validation : la valeur est sup\u00e9rieure au maximum autoris\u00e9 de '{0}'",
      "javax.faces.validator.DoubleRangeValidator.MINIMUM": "{1} : Erreur de validation : la valeur est inf\u00e9rieure au minimum autoris\u00e9 de '{0}'",
      "javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE": "{2} : Erreur de validation : l'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues de {0} et de {1}.",
      "javax.faces.validator.DoubleRangeValidator.TYPE": "{0} : Erreur de validation : la valeur n'est pas du bon type.",
      "javax.faces.validator.LengthValidator.MAXIMUM": "{1} : Erreur de validation : la valeur est sup\u00e9rieure au maximum autoris\u00e9 de '{0}'",
      "javax.faces.validator.LengthValidator.MINIMUM": "{1} : Erreur de validation : la valeur est inf\u00e9rieure au minimum autoris\u00e9 de '{0}'",
      "javax.faces.validator.LongRangeValidator.MAXIMUM": "{1} : Erreur de validation : la valeur est sup\u00e9rieure au maximum autoris\u00e9 de '{0}'",
      "javax.faces.validator.LongRangeValidator.MINIMUM": "{1} : Erreur de validation : la valeur est inf\u00e9rieure au minimum autoris\u00e9 de '{0}'",
      "javax.faces.validator.LongRangeValidator.NOT_IN_RANGE": "{2} : Erreur de validation : l'attribut sp\u00e9cifi\u00e9 n'est pas compris entre les valeurs attendues de {0} et de {1}.",
      "javax.faces.validator.LongRangeValidator.TYPE": "{0} : Erreur de validation : la valeur n'est pas du bon type.",
      "javax.faces.validator.RegexValidator.NOT_MATCHED": "{1} : Erreur de validation : la valeur ne correspond pas au mod\u00e8le '{0}'",
      "javax.faces.validator.BeanValidator.MESSAGE": "{1} : {0}",
    },
  });
}